package com.fhnew.app.model.network;

import com.fhnew.app.model.internet.been.B_Login;
import com.fhnew.app.model.network.entity.ResmsReg;
import com.fhnew.app.model.network.entity.req.BankList;
import com.fhnew.app.model.network.entity.req.BankName;
import com.fhnew.app.model.network.entity.req.Dianzi_zhenren_qipaiBean;
import com.fhnew.app.model.network.entity.req.MsgBoxBean;
import com.fhnew.app.model.network.entity.req.Pay_CurrentTimeBean;
import com.fhnew.app.model.network.entity.req.Pay_SingleCzBean;
import com.fhnew.app.model.network.entity.req.ResALLGames;
import com.fhnew.app.model.network.entity.req.ResActivity;
import com.fhnew.app.model.network.entity.req.ResBanner;
import com.fhnew.app.model.network.entity.req.ResChangemoney;
import com.fhnew.app.model.network.entity.req.ResCode;
import com.fhnew.app.model.network.entity.req.ResCommission;
import com.fhnew.app.model.network.entity.req.ResGetPay;
import com.fhnew.app.model.network.entity.req.ResKaiyuanGame;
import com.fhnew.app.model.network.entity.req.ResLogin;
import com.fhnew.app.model.network.entity.req.ResPayList;
import com.fhnew.app.model.network.entity.req.ResRecode;
import com.fhnew.app.model.network.entity.req.ResRecommend;
import com.fhnew.app.model.network.entity.req.ResRecord;
import com.fhnew.app.model.network.entity.req.ResTeam;
import com.fhnew.app.model.network.entity.req.ResTeamlist;
import com.fhnew.app.model.network.entity.req.ResURL;
import com.fhnew.app.model.network.entity.req.ResUserInfo;
import com.fhnew.app.model.network.entity.req.ResVerifyPhone;
import com.fhnew.app.model.network.entity.req.Resberifystatus;
import com.fhnew.app.model.network.entity.req.Resbuildground;
import com.fhnew.app.model.network.entity.req.ResdrawRecord;
import com.fhnew.app.model.network.entity.req.Resfuwenben;
import com.fhnew.app.model.network.entity.req.ResgetMoney;
import com.fhnew.app.model.network.entity.req.ReshotGames;
import com.fhnew.app.model.network.entity.req.Resmsg;
import com.fhnew.app.model.network.entity.req.Respass;
import com.fhnew.app.model.network.entity.req.RespayRecord;
import com.fhnew.app.model.network.entity.req.Respromotion;
import com.fhnew.app.model.network.entity.req.Resregister;
import com.fhnew.app.model.network.entity.req.Restyelogin;
import com.fhnew.app.model.network.entity.req.changeNikeNameBean;
import com.fhnew.app.model.network.entity.req.gameAdressBean;
import com.fhnew.app.model.network.entity.req.game_url_bean;
import com.fhnew.app.model.network.entity.req.update_PwdBean;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.Url;

/**
 * 网络json请求Api
 */
public interface HttpJsonApi {


    //进入游戏
    @GET
    Observable<ResKaiyuanGame> getkaixingame(@Url String url,
                                             @Query("game_id") String g_id,
                                             @Query("tag") String tag,
                                             @Query("doingCode") String doingCode,
                                             @Query("token") String token);

    //获取首页banner
    @GET
    Observable<ResBanner> getbanner(@Url String url);

    //获取首页热门游戏
    @GET
    Observable<ReshotGames> gethotGames(@Url String url);

    //获取客服
    @GET
    Observable<ResActivity> getactivitydata(@Url String url);

    //获取yue
    @POST
    Observable<ResgetMoney> getMoney(@Url String url, @Query("token") String token);

    //获取富文本
    @GET
    Observable<Resfuwenben> getSourceActivty(@Url String url, @Query("id") String id, @Query("token") String token);

    //获取所有游戏类型
    @GET
    Observable<ResALLGames> getallgame(@Url String url, @Query("token") String token);

    //额度转换
    @GET
    Observable<ResChangemoney> changemoney(@Url String url, @Query("down_id") String down_id,
                                           @Query("up_id") String up_id, @Query("money") String money, @Query("token") String token);

    //获取某平台余额
    @GET
    Observable<Resmsg> getaction(@Url String url
            , @Query("doingCode") String doingCode
            , @Query("game_id") String game_id, @Query("token") String token);

    //获取服务器地址
    @GET
    Observable<ResURL> getUrlList(@Url String url);

    //获取充值列表
    @GET
    Observable<ResPayList> getPayList(@Url String url, @Query("token") String token);


    //获取充值
    @GET
    Observable<ResGetPay> getPay(@Url String url,
                                 @Query("rechType") String rechType,
                                 @Query("token") String token);


    //充值记录
    @GET
    Observable<RespayRecord> payRecord(@Url String url,
                                       @Query("token") String token);

    //其他记录
    @GET
    Observable<ResRecord> getotherRecord(@Url String url,
                                         @Query("token") String token);//其他记录

    //提款记录
    @GET
    Observable<ResdrawRecord> drawRecord(@Url String url,
                                         @Query("token") String token);

    //修改个人资料
    @POST
    Observable<ResUserInfo> upUserInfo(@Url String url, @Query("fullName") String fullName, @Query("qq") String qq, @Query("wechat") String wechat,
                                       @Query("token") String token);


    //登录
    @POST
    Observable<B_Login> login(@Url String url, @Query("username") String peuser,
                              @Query("password") String password,
                              @Query("x_value") String x_value,
                              @Query("passport") String passport,
                              @Query("token") String token
    );

    //登录
    @POST
    Observable<B_Login.DataBean> init(@Url String url,
                                      @Query("token") String token);

    //短信登录
    @POST
    Observable<B_Login> mobileLogin(@Url String url, @Query("phone") String peuser,
                                    @Query("sms_code") String password, @Query("promoterCode") String promoterCode);

    //进入游戏
    @GET
    Observable<game_url_bean> getGameDatas1(@Url String url,
                                            @Query("game_id") int g_id,
                                            @Query("doingCode") int doingCode, @Query("token") String token
    );

    //进入游戏
    @GET
    Observable<Dianzi_zhenren_qipaiBean> getGameDatas(@Url String url, @Query("game_id") int g_id,
                                                      @Query("doingCode") int doingCode, @Query("token") String token);

    //进入游戏
    @GET
    Observable<gameAdressBean> gointogames(@Url String url, @Query("game_id") int g_id,
                                           @Query("doingCode") int doingCode, @Query("tag") String tag, @Query("token") String token);


    //验证码
    @GET
    Observable<ResCode> getcode(@Url String url);

    @POST
    Observable<Resregister> register(@Url String url, @Query("userName") String peuser,
                                     @Query("password") String password,
                                     @Query("fullName") String realname,
                                     @Query("contact") String phone,
                                     @Query("superUserName") String username,
                                     @Query("captcha_code") String codes,
                                     @Query("code") String code,
                                     @Query("promoterCode") String promoterCode, @Query("token") String token);

    //修改密码
    @POST
    Observable<Respass> changepass(@Url String url,
                                   @Query("phone") String phone,
                                   @Query("sms_code") String sms_code,
                                   @Query("password") String password,
                                   @Query("password_confirmation") String password_confirmation);

    //退出登录
    @GET
    Observable<Resbuildground> logout(@Url String url,
                                      @Query("token") String token);

    //退出游戏，下分
    @GET
    Observable<Resmsg> Sign_out_game(@Url String url,
                                     @Query("token") String token);

    //发送短信
    @GET
    Observable<Resmsg> sendmsg(@Url String url,
                               @Query("type") String type, @Query("action") String action);

    //获取短信是否打开
    @GET
    Observable<ResmsReg> smsReg(@Url String url);


    //获取服务器时间
    @GET
    Observable<Pay_CurrentTimeBean> getTime(@Url String url, @Query("token") String token);


    //线下充值接口
    @POST
    Observable<Pay_SingleCzBean> getSingleCz(@Url String url, @Query("cfgId") String cfgId,
                                             @Query("rechMoney") String rechMoney,
                                             @Query("realName") String realName,
                                             @Query("rechTime") String rechTime, @Query("token") String token
    );


    //修改登录密码
    @POST
    Observable<update_PwdBean> get_updat_loginpwd(@Url String url,
                                                  @Query("oldPwd") String oldPwd,
                                                  @Query("newPwd") String newPwd,
                                                  @Query("token") String token);

    //修改取款密码
    @POST
    Observable<update_PwdBean> updateFundPwd(@Url String url,
                                             @Query("oldPwd") String oldPwd,
                                             @Query("newPwd") String newPwd,
                                             @Query("token") String token);

    //设置取款密码
    @POST
    Observable<update_PwdBean> saveFundPwd(@Url String url,
                                           @Query("loginPwd") String loginPwd,
                                           @Query("fundPwd") String fundPwd,
                                           @Query("token") String token);
    //银行卡列表

    @GET
    Observable<BankList> getUserBankList(@Url String url,
                                         @Query("token") String token);

    //是否可以使用手机验证码
    @GET
    Observable<ResVerifyPhone> getVerifyPhone(@Url String url,
                                              @Query("token") String token);

    //提款，解绑专用手机号
    @GET
    Observable<changeNikeNameBean> getdrawSmsCode(@Url String url,
                                                  @Query("token") String token);

    //解绑
    @GET
    Observable<changeNikeNameBean> setunBank(@Url String url,
                                             @Query("bid") String bid,
                                             @Query("sms_code") String smsCode,
                                             @Query("token") String token);

    //提款
    @POST
    Observable<update_PwdBean> withdrawSubmit(@Url String url,
                                              @Query("bid") String bid,
                                              @Query("amount") String amount,
                                              @Query("fundPwd") String fundPwd,
                                              @Query("sms_code") String sms_code,
                                              @Query("token") String token);

    //银行卡名字
    @GET
    Observable<BankName> getBanks(@Url String url,
                                  @Query("token") String token);

    //绑定银行卡
    @POST
    Observable<BankName> bindBank(@Url String url,
                                  @Query("bank_id") String bank_id,
                                  @Query("cardNo") String cardNo,
                                  @Query("subAddress") String subAddress,
                                  @Query("token") String token);

    //我的消息 固定五百条。服务器没有分页
    @GET
    Observable<MsgBoxBean> get_user_messagebox(@Url String url,
                                               @Query("page") int page,
                                               @Query("row") int row,
                                               @Query("token") String token);


    //绑定手机号
    @GET
    Observable<changeNikeNameBean> change_phone(@Url String url, @Query("phone") String nickname,
                                                @Query("sms_code") String sms_code,
                                                @Query("token") String token);

    //我的推荐
    @POST
    Observable<Respromotion> getpromotion(@Url String url, @Query("token") String token);

    //我的推荐
    @POST
    Observable<ResgetMoney> getreceive(@Url String url, @Query("token") String token);

    //我的佣金page  rows
    @POST
    Observable<ResCommission> getcommission(@Url String url, @Query("page") String page,
                                            @Query("rows") String rows,
                                            @Query("startTime") String startTime,
                                            @Query("endTime") String endTime,
                                            @Query("token") String token);

    //佣金记录
    @POST
    Observable<ResRecode> getrecode(@Url String url, @Query("page") String page,
                                    @Query("rows") String rows,
                                    @Query("startTime") String startTime,
                                    @Query("endTime") String endTime,
                                    @Query("receiveStatus") String receiveStatus,
                                    @Query("token") String token);

    //团队报表
    @POST
    Observable<ResTeam> getteam(@Url String url, @Query("page") String page,
                                @Query("rows") String rows,
                                @Query("startTime") String startTime,
                                @Query("endTime") String endTime,
                                @Query("user_account") String user_account,
                                @Query("promotion_account") String promotion_account,
                                @Query("token") String token);

    //团队列表
    @POST
    Observable<ResTeamlist> getteamlist(@Url String url, @Query("page") String page,
                                        @Query("rows") String rows,
                                        @Query("startTime") String startTime,
                                        @Query("endTime") String endTime,
                                        @Query("user_account") String user_account,
                                        @Query("promoter_account") String promoter_account,
                                        @Query("user_level") String user_level,
                                        @Query("token") String token);
    //                                    @Query("shamUser") String shamUser,移动端不需要


    //推荐介绍
    @POST
    Observable<ResRecommend> getrecommend(@Url String url,
                                          @Query("token") String token); //推荐介绍  //推荐介绍

    @GET
    Observable<Restyelogin> tyelogin(@Url String url); //滑动验证码

    //验证类型
    @GET
    Observable<Resberifystatus> getberifystatus(@Url String url);

}
